#include <iostream>
#include <atomic>
#include <thread>

/**
 * C++ 原子操作（Atomic Operations）
 *
 * 院子操作确保对共享数据的访问是不可分割的，即在多线程环境下，原子操作要么完全执行，要么完全不执行，不会出现中间状态。
 */

std::atomic<int> count(0);

void increment(){
    count.fetch_add(1,std::memory_order_relaxed);
}

int main() {
    std::thread t1(increment);
    std::thread t2(increment);

    t1.join();
    t2.join();
    return count;
}
